/**
 ****************************************************************************************************
 * @file        lvgl_demo.c
 * @author      正点原子团队(ALIENTEK)
 * @version     V1.0
 * @date        2022-01-11
 * @brief       lvgl+FreeRTOS操作系统移植实验
 * @license     Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
 ****************************************************************************************************
 */
#include "userConfig.h"
#include "usart.h"
#include "lwip_comm.h"
#include "lwipopts.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"

#include <lwip/apps/ping.h>

#include "lvgl.h"
#include "lv_example_get_started.h"
#include "lv_port_disp.h"

/* START_TASK 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define START_TASK_PRIO         1                   /* 任务优先级 */
#define START_STK_SIZE          256                 /* 任务堆栈大小 */
static TaskHandle_t StartTask_Handler;             /* 任务句柄 */


/**
 * @brief       start_lvgl_task
 * @param       pvParameters : 传入参数
 * @retval      无
 */
void start_lvgl_task(void *pvParameters)
{
    lv_init();
    lv_port_disp_init();
    lv_example_get_started_1();

    while (1) {
        lv_task_handler();
        vTaskDelay(10);
    }
}

/**
 * @breif       lvgl_demo
 * @param       无
 * @retval      无
 */
void lvgl_demo(void)
{
    /* start_task */
    xTaskCreate((TaskFunction_t )start_lvgl_task,            /* 任务函数 */
                (const char *   )"start_task",          /* 任务名称 */
                (uint16_t       )START_STK_SIZE,        /* 任务堆栈 */
                (void *         )NULL,                  /* 传递给任务函数的参数 */
                (UBaseType_t    )START_TASK_PRIO,       /* 任务的优先级 */
                (TaskHandle_t * )&StartTask_Handler);   /* 任务句柄 */

    /* 开启任务调度 */
    vTaskStartScheduler();
}
